package com.fortune.dao;

import com.fortune.entity.COrderPolicy;
import com.fortune.vo.cOrder.*;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

public interface COrderDao {
    /**
     * 查询商品列表
     * @return
     */
    List<ClientOrderProduct> findListOrderProductInfo(@Param("mid") String mid);

    /**
     * 根据商品查询优惠
     * @param mid
     * @param mpid
     * @return
     */
    COrderPolicy findListCOrderPolicy(@Param("mid") String mid,@Param("mpid") String mpid);

    /**
     * 添加订单
     * @return
     */
    int addCOrder(@Param("mid") String mid,
                  @Param("did") String did,
                  @Param("clientId") String clientId,
                  @Param("id") String id,
                  @Param("no") String no,
                  @Param("userId") String userId,
                  @Param("pTotalPrice") BigDecimal pTotalPrice,
                  @Param("dTotalPrice") BigDecimal dTotalPrice);

    /**
     * 添加订单详情
     * @param mid
     * @param did
     * @param clientId
     * @param id
     * @param detailsNo
     * @param productId
     * @param orderNum
     * @param unitPrice
     * @param backBoxNum
     * @param dprice
     * @return
     */
    int addCOrderDetails(@Param("mid") String mid,
                         @Param("did") String did,
                         @Param("clientId") String clientId,
                         @Param("id") String id,
                         @Param("detailsNo") int detailsNo,
                         @Param("productId") String productId,
                         @Param("orderNum") float orderNum,
                         @Param("price") BigDecimal price,
                         @Param("policyId") String policyId,
                         @Param("unitPrice") BigDecimal unitPrice,
                         @Param("backBoxNum") float backBoxNum,
                         @Param("dprice") BigDecimal dprice,
                         @Param("tprice") BigDecimal tprice);

    /**
     * 添加订单详情
     * @param mid
     * @param did
     * @param clientId
     * @param id
     * @param detailsNo
     * @param productId
     * @param orderNum
     * @param unitPrice
     * @param backBoxNum
     * @param dprice
     * @return
     */
    int addCOrderDetailsByZS(@Param("mid") String mid,
                         @Param("did") String did,
                         @Param("clientId") String clientId,
                         @Param("id") String id,
                         @Param("detailsNo") int detailsNo,
                         @Param("productId") String productId,
                         @Param("orderNum") float orderNum,
                         @Param("price") BigDecimal price,
                         @Param("policyId") String policyId,
                         @Param("unitPrice") BigDecimal unitPrice,
                         @Param("backBoxNum") float backBoxNum,
                         @Param("dprice") BigDecimal dprice,
                         @Param("tprice") BigDecimal tprice);

    /**
     * 删除订单
     * @param mid
     * @param did
     * @param clientId
     * @param ordersId
     * @param orderNums
     * @return
     */
    int editOrder(@Param("mid") String mid,
                  @Param("did") String did,
                  @Param("clientId") String clientId,
                  @Param("ordersId") String ordersId,
                  @Param("orderNums") String orderNums);

    /**
     * 已批准订单详情
     * @param mid
     * @param did
     * @param clientId
     * @param orderId
     * @return
     */
    ClientOrderDetail findClientOrderDetail(@Param("mid") String mid,
                                            @Param("did") String did,
                                            @Param("clientId") String clientId,
                                            @Param("orderId") String orderId);

    /**
     * 已出库订单详情
     * @param mid
     * @param did
     * @param clientId
     * @param orderId
     * @return
     */
    ClientOrderDetail findClientOrderDetailByCk(@Param("mid") String mid,
                                                @Param("did") String did,
                                                @Param("clientId") String clientId,
                                                @Param("orderId") String orderId);

    /**
     * 已收货订单详情
     * @param mid
     * @param did
     * @param clientId
     * @param orderId
     * @return
     */
    ClientOrderDetails findClientOrderDetailsBySH(@Param("mid") String mid,
                                                  @Param("did") String did,
                                                  @Param("clientId") String clientId,
                                                  @Param("orderId") String orderId);

    /**
     * 已完成订单详情
     * @param mid
     * @param did
     * @param clientId
     * @param orderId
     * @return
     */
    ClientOrderDetails findClientOrderDetailsByWC(@Param("mid") String mid,
                                                    @Param("did") String did,
                                                    @Param("clientId") String clientId,
                                                    @Param("orderId") String orderId);

    /**
     * 删除订单
     * @param mid
     * @param did
     * @param clientId
     * @param orderId
     * @return
     */
    int deleteCOrder(@Param("mid") String mid,
                     @Param("did") String did,
                     @Param("clientId") String clientId,
                     @Param("orderId") String orderId);

    /**
     * 查询未处理的列表
     * @param mid
     * @param did
     * @param userId
     * @return
     */
    List<ClientOrder> findListClientOrder(@Param("mid") String mid,
                                          @Param("did") String did,
                                          @Param("userId") String userId);

    /**
     * 查询已批准的列表
     * @param mid
     * @param did
     * @param userId
     * @return
     */
    List<ClientOrder> findListClientOrderByApproved(@Param("mid") String mid,
                                                    @Param("did") String did,
                                                    @Param("userId") String userId);

    /**
     * 查询发货的列表
     * @param mid
     * @param did
     * @param userId
     * @return
     */
    List<ClientOrder> findListClientOrderByShipped(@Param("mid") String mid,
                                                   @Param("did") String did,
                                                   @Param("userId") String userId);

    /**
     * 查询已收货的列表
     * @param mid
     * @param did
     * @param userId
     * @return
     */
    List<ClientOrder> findListClientOrderByreceived(@Param("mid") String mid,
                                                    @Param("did") String did,
                                                    @Param("userId") String userId);

    /**
     * 查询已完成的列表
     * @param mid
     * @param did
     * @param userId
     * @return
     */
    List<ClientOrder> findListClientOrderByCompleted(@Param("mid") String mid,
                                                     @Param("did") String did,
                                                     @Param("userId") String userId);
}
